From ed6631487629810a2bb42fc8784065e387cb14aa Mon Sep 17 00:00:00 2001 From: robertl Date: Thu, 3 Nov 2005 04:56:27 +0000 Subject: [PATCH] More scratching for lap xfer. --- gpsbabel/jeeps/gpsapp.c | 77 ++++++++++++++++++++++++++++++++++++++++ gpsbabel/jeeps/gpsprot.h | 6 ++++ 2 files changed, 83 insertions(+) diff --git a/gpsbabel/jeeps/gpsapp.c b/gpsbabel/jeeps/gpsapp.c index 1f387fa6f..96d2b7af6 100644 --- a/gpsbabel/jeeps/gpsapp.c +++ b/gpsbabel/jeeps/gpsapp.c @@ -5840,6 +5840,83 @@ void GPS_D800_Get(GPS_PPacket packet, GPS_PPvt_Data *pvt) return; } +#if XXX /* FIXME/PLACEHOLDER */ + +/* @func GPS_A906_Get ****************************************************** +** +** Get lap data from GPS +** +** @param [r] port [const char *] serial port +** @param [w] trk [GPS_PLap_Data **] lap array +** +** @return [int32] number of lap entries +************************************************************************/ + +int32 GPS_A906_Get(const char *port, GPS_OLap_Data **lap) +{ + static UC data[2]; + int32 fd; + GPS_PPacket lappkt; + GPS_PPacket recpkt; + int32 i, n; + + if (gps_lap_transfer == -1) + return GPS_UNSUPPORTED; + + if (!GPS_Serial_On(port, &fd)) + return gps_errno; + + if (!(lappkt = GPS_Packet_New() ) || !(recpkt = GPS_Packet_New())) + return MEMORY_ERROR; + + GPS_Util_Put_Short(data, + COMMAND_ID[gps_device_command].Cmnd_Transfer_Lap); + GPS_Make_Packet(&lappkt, LINK_ID[gps_link_type].Pid_Command_Data, + data,2); + if(!GPS_Write_Packet(fd,lappkt)) + return gps_errno; + if(!GPS_Get_Ack(fd, &lappkt, &recpkt)) + return gps_errno; + if(!GPS_Packet_Read(fd, &recpkt)) + return gps_errno; + if(!GPS_Send_Ack(fd, &lappkt, &recpkt)) + return gps_errno; + + n = GPS_Util_Get_Short(recpkt->data); + + if(n) + if(!((*lap)=(GPS_PLap *)malloc(n*sizeof(GPS_PLap)))) + { + GPS_Error("A906_Get: Insufficient memory"); + return MEMORY_ERROR; + } + + for(i=0;i